from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
import conftest


class GetDriver:
    # 设置类属性
    driver = None

    # 获取driver
    @classmethod
    def get_driver(cls,url):
        if cls.driver is None:
            # 实例化浏览器
            # 防止打印一些无用的日志
            # 设置 Chrome WebDriver 路径
            chrome_driver_path = conftest.BASE_DIR + '/tool/chromedriver.exe'

            # 创建 ChromeOptions 对象
            options = Options()
            options.add_experimental_option("excludeSwitches", ["enable-logging"])

            # 创建 Chrome WebDriver 服务
            service = Service(chrome_driver_path)

            # 创建 Chrome WebDriver 实例
            cls.driver = webdriver.Chrome(service=service, options=options)

            # 最大化
            cls.driver.maximize_window()
            # 打开浏览器
            cls.driver.get(url)
        return cls.driver

    # 退出driver
    @classmethod
    def quit_driver(cls):
        if cls.driver:
            #print("关闭之前：", cls.driver)
            cls.driver.quit()
            #print("关闭之后：", cls.driver)

            # 注意：此处有一个很大坑
            cls.driver = None
            # print("置空之后：", cls.driver)


if __name__ == '__main__':
    # 第一次获取浏览器
    print(GetDriver().get_driver())
    # 第二次获取浏览器
    print(GetDriver().get_driver())
    # 调用关闭，测试 关闭后driver是否为None
    GetDriver().quit_driver()
    # print(GetDriver().get_driver())